<?php

/**
 * 类名 get_gust_info
 * 创建者: TonicGB
 * 说明:
 * 用取得客户端的ip、地理信息、浏览器http://blog.qita.in
 */
 class get_gust_info {
      public function __construct()
      {
          header("Content-type: text/html;charset=utf-8;");
      }
     ////获得访客浏览器类型
     function GetBrowser(){
         if(!empty($_SERVER['HTTP_USER_AGENT'])){
             $br = $_SERVER['HTTP_USER_AGENT'];
             if (preg_match('/MSIE/i',$br)) {
                 $br = 'MSIE';
             }elseif (preg_match('/Firefox/i',$br)) {
                 $br = 'Firefox';
             }elseif (preg_match('/Chrome/i',$br)) {
                 $br = 'Chrome';
             }elseif (preg_match('/Safari/i',$br)) {
                 $br = 'Safari';
             }elseif (preg_match('/Opera/i',$br)) {
                 $br = 'Opera';
             }else {
                 $br = 'Other';
             }
             return $br;
         }else{return "获取浏览器信息失败！";}
     }

     ////获得访客浏览器语言
     function GetLang(){
         if(!empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
             $lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
             $lang = substr($lang,0,5);
             if(preg_match("/zh-cn/i",$lang)){
                 $lang = "简体中文";
             }elseif(preg_match("/zh/i",$lang)){
                 $lang = "繁体中文";
             }else{
                 $lang = "English";
             }
             return $lang;

         }else{return "获取浏览器语言失败！";}
     }

     ////获取访客操作系统
     function GetOs(){
         if(!empty($_SERVER['HTTP_USER_AGENT'])){
             $OS = $_SERVER['HTTP_USER_AGENT'];
             if (preg_match('/win/i',$OS)) {
                 $OS = 'Windows';
             }elseif (preg_match('/mac/i',$OS)) {
                 $OS = 'MAC';
             }elseif (preg_match('/linux/i',$OS)) {
                 $OS = 'Linux';
             }elseif (preg_match('/unix/i',$OS)) {
                 $OS = 'Unix';
             }elseif (preg_match('/bsd/i',$OS)) {
                 $OS = 'BSD';
             }else {
                 $OS = 'Other';
             }
             return $OS;
         }else{return "获取访客操作系统信息失败！";}
     }

     ////获得访客真实ip
     function Getip(){
         if(!empty($_SERVER["HTTP_CLIENT_IP"])){
             $ip = $_SERVER["HTTP_CLIENT_IP"];
         }

         $tip = empty($_SERVER['REMOTE_ADDR']) ? $ip : $_SERVER['REMOTE_ADDR'];
         if($tip=="127.0.0.1"){ //获得本地真实IP
             return $this->get_onlineip();
         }else{
             return $tip;
         }
     }

     ////获得本地真实IP
     function get_onlineip() {
         $mip = file_get_contents("http://city.ip138.com/city0.asp");
         if($mip){
             preg_match("/\[.*\]/",$mip,$sip);
             $p = array("/\[/","/\]/");
             return preg_replace($p,"",$sip[0]);
         }else{return "获取本地IP失败！";}
     }

     ////根据ip获得访客所在地地名
     function Getaddress($ip=''){
         if(empty($ip)){
             $ip = $this->Getip();
         }
         $ipadd = file_get_contents("http://int.dpool.sina.com.cn/iplookup/iplookup.php?ip=".$ip);//根据新浪api接口获取
         if($ipadd){
             $charset = iconv("gbk","utf-8",$ipadd);
             preg_match_all("/[\x{4e00}-\x{9fa5}]+/u",$charset,$ipadds);

             return $ipadds;   //返回一个二维数组
         }else{return "addree is none";}
     }
 }
 $gifo = new get_gust_info();
 echo "你的ip:".$gifo->Getip();
 echo "<br/>所在地：";
 $ipadds = $gifo->Getaddress();
 foreach($ipadds[0] as $value){
     //echo "\r\n    ".iconv("utf-8","gbk",$value);
     echo "\r\n" . $value;
 }

 echo "<br/>浏览器类型：".$gifo->GetBrowser();
 echo "<br/>浏览器语言：".$gifo->GetLang();
 echo "<br/>操作系统：".$gifo->GetOs();


 ?>
